package org.jsola.hr.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import org.jsola.core.dto.BaseDTO;
import org.jsola.core.validator.Const;
import org.jsola.hr.constant.EmpInfoRequireType;
import org.jsola.hr.constant.EmpInfoScene;

import javax.validation.constraints.NotNull;

import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_BLACK_WHITE_PHOTO;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_DEGREE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_DIPLOMA;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_DRIVING_LICENSE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_ENGLISH_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_HOUSEHOLD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_ID_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_MAJOR;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_NCRE_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_NO_CRIMINAL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_PRACTISING;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_PTH_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ANNEX_REWARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_BANK_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_BANK_NAME;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_BANK_PLACE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_BIRTHDAY;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_BIRTHPLACE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_BIRTH_STATUS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_COMPANY_ID;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_CURRENT_LOCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_EMAIL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_EMER_CONTACT;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_EMER_LOCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_EMER_PHONE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_EMP_PHOTO;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ENGLISH_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_GENDER;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_HAS_WEIGHTY_MEDICAL_HIS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_HEALTH_CONDITION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_HIGHEST_EDUCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_ID_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_JOB_TITLE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_JOIN_WORK_DATE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_MARITAL_STATUS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_NAME;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_NATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_NATIVE_LOCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_NCRE_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_NUMBER;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_PARTY_DATE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_PARTY_SITE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_PHONE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_POLITICAL_STATUS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_PRIZE_WINNING;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_PUTONGHUA_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_REG_TYPE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_SOC_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_SOC_TYPE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_SPECIALITY;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_TAB_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_TAB_CERTIFICATE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_TAB_CONTACTS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_TAB_EDUCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_TAB_TRAIN;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_TAB_WORK;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_TARGET_POST;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_TYPE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.E_WORKING_UNIT_NAME;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_BLACK_WHITE_PHOTO_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_DEGREE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_DIPLOMA_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_DRIVING_LICENSE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_ENGLISH_LEVEL_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_HOUSEHOLD_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_ID_CARD_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_MAJOR_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_NCRE_LEVEL_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_NO_CRIMINAL_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_PRACTISING_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_PTH_LEVEL_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ANNEX_REWARD_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_BANK_CARD_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_BANK_NAME_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_BANK_PLACE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_BIRTHDAY_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_BIRTHPLACE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_BIRTH_STATUS_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_COMPANY_ID_MAX;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_COMPANY_ID_NOT_NULL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_CURRENT_LOCATION_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_EMAIL_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_EMER_CONTACT_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_EMER_LOCATION_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_EMER_PHONE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_EMP_PHOTO_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ENGLISH_LEVEL_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_GENDER_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_HAS_WEIGHTY_MEDICAL_HIS_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_HEALTH_CONDITION_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_HIGHEST_EDUCATION_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_ID_CARD_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_JOB_TITLE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_JOIN_WORK_DATE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_MARITAL_STATUS_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_NAME_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_NATION_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_NATIVE_LOCATION_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_NCRE_LEVEL_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_NUMBER_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_PARTY_DATE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_PARTY_SITE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_PHONE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_POLITICAL_STATUS_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_PRIZE_WINNING_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_PUTONGHUA_LEVEL_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_REG_TYPE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_SOC_CARD_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_SOC_TYPE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_SPECIALITY_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TAB_CARD_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TAB_CERTIFICATE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TAB_CONTACTS_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TAB_EDUCATION_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TAB_TRAIN_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TAB_WORK_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TARGET_POST_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TYPE_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TYPE_MAX;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_TYPE_NOT_NULL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.M_WORKING_UNIT_NAME_ENUM_NOT_MATCH;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_BLACK_WHITE_PHOTO;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_DEGREE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_DIPLOMA;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_DRIVING_LICENSE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_ENGLISH_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_HOUSEHOLD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_ID_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_MAJOR;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_NCRE_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_NO_CRIMINAL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_PRACTISING;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_PTH_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ANNEX_REWARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_BANK_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_BANK_NAME;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_BANK_PLACE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_BIRTHDAY;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_BIRTHPLACE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_BIRTH_STATUS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_COMPANY_ID;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_CURRENT_LOCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_EMAIL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_EMER_CONTACT;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_EMER_LOCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_EMER_PHONE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_EMP_PHOTO;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ENGLISH_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_GENDER;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_HAS_WEIGHTY_MEDICAL_HIS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_HEALTH_CONDITION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_HIGHEST_EDUCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_ID_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_JOB_TITLE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_JOIN_WORK_DATE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_MARITAL_STATUS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_NAME;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_NATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_NATIVE_LOCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_NCRE_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_NUMBER;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_PARTY_DATE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_PARTY_SITE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_PHONE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_POLITICAL_STATUS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_PRIZE_WINNING;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_PUTONGHUA_LEVEL;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_REG_TYPE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_SOC_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_SOC_TYPE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_SPECIALITY;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_TAB_CARD;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_TAB_CERTIFICATE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_TAB_CONTACTS;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_TAB_EDUCATION;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_TAB_TRAIN;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_TAB_WORK;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_TARGET_POST;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_TYPE;
import static org.jsola.hr.example.CompanyEmpInfoRequireExample.N_WORKING_UNIT_NAME;

/**
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "新增【公司员工所需信息】的参数")
@Data
public class CompanyEmpInfoRequireAddDTO extends BaseDTO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_COMPANY_ID, example = E_COMPANY_ID, required = true)
    @NotNull(message = M_COMPANY_ID_NOT_NULL)
    @Length(max = 32, message = M_COMPANY_ID_MAX)
    private String companyId;

    @ApiModelProperty(notes = N_TYPE, example = E_TYPE, required = true, allowableValues = EmpInfoScene.VALUES_STR)
    @NotNull(message = M_TYPE_NOT_NULL)
    @Length(max = 20, message = M_TYPE_MAX)
    @Const(constClass = EmpInfoScene.class, message = M_TYPE_ENUM_NOT_MATCH)
    private String type;

    @ApiModelProperty(notes = N_NUMBER, example = E_NUMBER, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_NUMBER_ENUM_NOT_MATCH)
    private Integer number;

    @ApiModelProperty(notes = N_NAME, example = E_NAME, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_NAME_ENUM_NOT_MATCH)
    private Integer name;

    @ApiModelProperty(notes = N_ID_CARD, example = E_ID_CARD, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ID_CARD_ENUM_NOT_MATCH)
    private Integer idCard;

    @ApiModelProperty(notes = N_NATION, example = E_NATION, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_NATION_ENUM_NOT_MATCH)
    private Integer nation;

    @ApiModelProperty(notes = N_BIRTHDAY, example = E_BIRTHDAY, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_BIRTHDAY_ENUM_NOT_MATCH)
    private Integer birthday;

    @ApiModelProperty(notes = N_GENDER, example = E_GENDER, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_GENDER_ENUM_NOT_MATCH)
    private Integer gender;

    @ApiModelProperty(notes = N_PHONE, example = E_PHONE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_PHONE_ENUM_NOT_MATCH)
    private Integer phone;

    @ApiModelProperty(notes = N_EMAIL, example = E_EMAIL, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_EMAIL_ENUM_NOT_MATCH)
    private Integer email;

    @ApiModelProperty(notes = N_EMP_PHOTO, example = E_EMP_PHOTO, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_EMP_PHOTO_ENUM_NOT_MATCH)
    private Integer empPhoto;

    @ApiModelProperty(notes = N_HIGHEST_EDUCATION, example = E_HIGHEST_EDUCATION, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_HIGHEST_EDUCATION_ENUM_NOT_MATCH)
    private Integer highestEducation;

    @ApiModelProperty(notes = N_MARITAL_STATUS, example = E_MARITAL_STATUS, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_MARITAL_STATUS_ENUM_NOT_MATCH)
    private Integer maritalStatus;

    @ApiModelProperty(notes = N_BIRTH_STATUS, example = E_BIRTH_STATUS, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_BIRTH_STATUS_ENUM_NOT_MATCH)
    private Integer birthStatus;

    @ApiModelProperty(notes = N_POLITICAL_STATUS, example = E_POLITICAL_STATUS, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_POLITICAL_STATUS_ENUM_NOT_MATCH)
    private Integer politicalStatus;

    @ApiModelProperty(notes = N_PARTY_DATE, example = E_PARTY_DATE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_PARTY_DATE_ENUM_NOT_MATCH)
    private Integer partyDate;

    @ApiModelProperty(notes = N_PARTY_SITE, example = E_PARTY_SITE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_PARTY_SITE_ENUM_NOT_MATCH)
    private Integer partySite;

    @ApiModelProperty(notes = N_BIRTHPLACE, example = E_BIRTHPLACE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_BIRTHPLACE_ENUM_NOT_MATCH)
    private Integer birthplace;

    @ApiModelProperty(notes = N_NATIVE_LOCATION, example = E_NATIVE_LOCATION, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_NATIVE_LOCATION_ENUM_NOT_MATCH)
    private Integer nativeLocation;

    @ApiModelProperty(notes = N_REG_TYPE, example = E_REG_TYPE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_REG_TYPE_ENUM_NOT_MATCH)
    private Integer regType;

    @ApiModelProperty(notes = N_CURRENT_LOCATION, example = E_CURRENT_LOCATION, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_CURRENT_LOCATION_ENUM_NOT_MATCH)
    private Integer currentLocation;

    @ApiModelProperty(notes = N_EMER_CONTACT, example = E_EMER_CONTACT, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_EMER_CONTACT_ENUM_NOT_MATCH)
    private Integer emerContact;

    @ApiModelProperty(notes = N_EMER_PHONE, example = E_EMER_PHONE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_EMER_PHONE_ENUM_NOT_MATCH)
    private Integer emerPhone;

    @ApiModelProperty(notes = N_EMER_LOCATION, example = E_EMER_LOCATION, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_EMER_LOCATION_ENUM_NOT_MATCH)
    private Integer emerLocation;

    @ApiModelProperty(notes = N_BANK_CARD, example = E_BANK_CARD, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_BANK_CARD_ENUM_NOT_MATCH)
    private Integer bankCard;

    @ApiModelProperty(notes = N_BANK_NAME, example = E_BANK_NAME, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_BANK_NAME_ENUM_NOT_MATCH)
    private Integer bankName;

    @ApiModelProperty(notes = N_BANK_PLACE, example = E_BANK_PLACE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_BANK_PLACE_ENUM_NOT_MATCH)
    private Integer bankPlace;

    @ApiModelProperty(notes = N_SOC_TYPE, example = E_SOC_TYPE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_SOC_TYPE_ENUM_NOT_MATCH)
    private Integer socType;

    @ApiModelProperty(notes = N_SOC_CARD, example = E_SOC_CARD, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_SOC_CARD_ENUM_NOT_MATCH)
    private Integer socCard;

    @ApiModelProperty(notes = N_HEALTH_CONDITION, example = E_HEALTH_CONDITION, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_HEALTH_CONDITION_ENUM_NOT_MATCH)
    private Integer healthCondition;

    @ApiModelProperty(notes = N_HAS_WEIGHTY_MEDICAL_HIS, example = E_HAS_WEIGHTY_MEDICAL_HIS, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_HAS_WEIGHTY_MEDICAL_HIS_ENUM_NOT_MATCH)
    private Integer hasWeightyMedicalHis;

    @ApiModelProperty(notes = N_JOB_TITLE, example = E_JOB_TITLE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_JOB_TITLE_ENUM_NOT_MATCH)
    private Integer jobTitle;

    @ApiModelProperty(notes = N_JOIN_WORK_DATE, example = E_JOIN_WORK_DATE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_JOIN_WORK_DATE_ENUM_NOT_MATCH)
    private Integer joinWorkDate;

    @ApiModelProperty(notes = N_WORKING_UNIT_NAME, example = E_WORKING_UNIT_NAME, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_WORKING_UNIT_NAME_ENUM_NOT_MATCH)
    private Integer workingUnitName;

    @ApiModelProperty(notes = N_PUTONGHUA_LEVEL, example = E_PUTONGHUA_LEVEL, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_PUTONGHUA_LEVEL_ENUM_NOT_MATCH)
    private Integer putonghuaLevel;

    @ApiModelProperty(notes = N_SPECIALITY, example = E_SPECIALITY, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_SPECIALITY_ENUM_NOT_MATCH)
    private Integer speciality;

    @ApiModelProperty(notes = N_PRIZE_WINNING, example = E_PRIZE_WINNING, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_PRIZE_WINNING_ENUM_NOT_MATCH)
    private Integer prizeWinning;

    @ApiModelProperty(notes = N_ENGLISH_LEVEL, example = E_ENGLISH_LEVEL, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ENGLISH_LEVEL_ENUM_NOT_MATCH)
    private Integer englishLevel;

    @ApiModelProperty(notes = N_NCRE_LEVEL, example = E_NCRE_LEVEL, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_NCRE_LEVEL_ENUM_NOT_MATCH)
    private Integer ncreLevel;

    @ApiModelProperty(notes = N_TARGET_POST, example = E_TARGET_POST, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_TARGET_POST_ENUM_NOT_MATCH)
    private Integer targetPost;

    @ApiModelProperty(notes = N_TAB_CONTACTS, example = E_TAB_CONTACTS, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_TAB_CONTACTS_ENUM_NOT_MATCH)
    private Integer tabContacts;

    @ApiModelProperty(notes = N_TAB_WORK, example = E_TAB_WORK, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_TAB_WORK_ENUM_NOT_MATCH)
    private Integer tabWork;

    @ApiModelProperty(notes = N_TAB_EDUCATION, example = E_TAB_EDUCATION, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_TAB_EDUCATION_ENUM_NOT_MATCH)
    private Integer tabEducation;

    @ApiModelProperty(notes = N_TAB_CARD, example = E_TAB_CARD, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_TAB_CARD_ENUM_NOT_MATCH)
    private Integer tabCard;

    @ApiModelProperty(notes = N_TAB_TRAIN, example = E_TAB_TRAIN, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_TAB_TRAIN_ENUM_NOT_MATCH)
    private Integer tabTrain;

    @ApiModelProperty(notes = N_TAB_CERTIFICATE, example = E_TAB_CERTIFICATE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_TAB_CERTIFICATE_ENUM_NOT_MATCH)
    private Integer tabCertificate;

    @ApiModelProperty(notes = N_ANNEX_ID_CARD, example = E_ANNEX_ID_CARD, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_ID_CARD_ENUM_NOT_MATCH)
    private Integer annexIdCard;

    @ApiModelProperty(notes = N_ANNEX_HOUSEHOLD, example = E_ANNEX_HOUSEHOLD, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_HOUSEHOLD_ENUM_NOT_MATCH)
    private Integer annexHousehold;

    @ApiModelProperty(notes = N_ANNEX_DIPLOMA, example = E_ANNEX_DIPLOMA, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_DIPLOMA_ENUM_NOT_MATCH)
    private Integer annexDiploma;

    @ApiModelProperty(notes = N_ANNEX_DEGREE, example = E_ANNEX_DEGREE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_DEGREE_ENUM_NOT_MATCH)
    private Integer annexDegree;

    @ApiModelProperty(notes = N_ANNEX_PRACTISING, example = E_ANNEX_PRACTISING, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_PRACTISING_ENUM_NOT_MATCH)
    private Integer annexPractising;

    @ApiModelProperty(notes = N_ANNEX_MAJOR, example = E_ANNEX_MAJOR, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_MAJOR_ENUM_NOT_MATCH)
    private Integer annexMajor;

    @ApiModelProperty(notes = N_ANNEX_REWARD, example = E_ANNEX_REWARD, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_REWARD_ENUM_NOT_MATCH)
    private Integer annexReward;

    @ApiModelProperty(notes = N_ANNEX_NO_CRIMINAL, example = E_ANNEX_NO_CRIMINAL, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_NO_CRIMINAL_ENUM_NOT_MATCH)
    private Integer annexNoCriminal;

    @ApiModelProperty(notes = N_ANNEX_BLACK_WHITE_PHOTO, example = E_ANNEX_BLACK_WHITE_PHOTO, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_BLACK_WHITE_PHOTO_ENUM_NOT_MATCH)
    private Integer annexBlackWhitePhoto;

    @ApiModelProperty(notes = N_ANNEX_PTH_LEVEL, example = E_ANNEX_PTH_LEVEL, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_PTH_LEVEL_ENUM_NOT_MATCH)
    private Integer annexPthLevel;

    @ApiModelProperty(notes = N_ANNEX_ENGLISH_LEVEL, example = E_ANNEX_ENGLISH_LEVEL, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_ENGLISH_LEVEL_ENUM_NOT_MATCH)
    private Integer annexEnglishLevel;

    @ApiModelProperty(notes = N_ANNEX_NCRE_LEVEL, example = E_ANNEX_NCRE_LEVEL, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_NCRE_LEVEL_ENUM_NOT_MATCH)
    private Integer annexNcreLevel;

    @ApiModelProperty(notes = N_ANNEX_DRIVING_LICENSE, example = E_ANNEX_DRIVING_LICENSE, allowableValues = EmpInfoRequireType.VALUES_STR)
    @Const(constClass = EmpInfoRequireType.class, message = M_ANNEX_DRIVING_LICENSE_ENUM_NOT_MATCH)
    private Integer annexDrivingLicense;


}

